/**
 * 
 */
package com.nightwalker.xsite.infra;

import java.sql.Connection;
import java.sql.SQLException;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

import org.apache.log4j.Logger;

/**
 * ServiceLocator
 * <br><br>
 * <b>Description:</b> Classe usada para localizar o serviço de banco de dados.
 * <br><br>
 * Created in Jan 27, 2008 7:03:34 PM
 * <br>
 * <b>version:</b>
 * <br>
 * <b>Modifications:</b>
 */
public class ServiceLocator {
	
	private static Logger log = Logger.getLogger(ServiceLocator.class);
	
	public Connection getConnection(){
		log.debug("Iniciando ServiceLocator");
		try {						
			Context contexto = new InitialContext();
			log.debug("Fazendo o lookup pelo DataSource");
			DataSource dataSource = (DataSource) contexto.lookup("java:xsite");
			log.debug("DataSource recuperado com sucesso");
			
			log.debug("Recuperando uma conexão do banco de dados");
			Connection conexao = dataSource.getConnection();
			log.debug("Conexão recuperada com sucesso");
			
			return conexao;
		} catch (NamingException e) {
			log.fatal("Erro ao recuperar conexão com o banco de dados", e);
			throw new ServiceLocatorException(e);
		} catch (SQLException e) {
			log.fatal("Erro ao recuperar conexão com o banco de dados", e);
			throw new ServiceLocatorException(e);
		}
		
	}
}
